#ifndef _UART_H_
#define _UART_H_

#include<stdio.h>       
#include<stdlib.h>     
#include<unistd.h>    
#include<sys/types.h>   
#include<sys/stat.h>     
#include<fcntl.h>     
#include<termios.h>    
#include<errno.h>      
#include<string.h> 
#include <signal.h>  



#ifdef __cplusplus
extern "C"{
#endif
/*
*描述  : 打开串口
*参数  : HiSerDevice串口设备名 串口设备举例: /dev/ttyAMA1 /dev/ttyAMA2
*返回值: 成功返回fd，失败返回-1
*注意  ：无
*/
int HI_Serial_Open(const char* HiSerDevice);  
/*
*描述  : 关闭串口
*参数  : fd文件描述符 
*返回值: 成功返回fd，失败返回-1
*注意  ：无
*/
void HI_Serial_Close(int fd); 
/*
*描述  : 串口参数设置
*参数  : fd: 文件描述符	 
*        speed: 波特率.115200,19200,9600...
*        flow_ctrl: 流控
*        databits: 数据位 取值为5,6,7,8
*        stopbits: 停止位 取值为1,2
*        parity: 奇偶校验位	 取值为N,W,O,S
*返回值: 成功返回0，失败返回-1
*注意  ：无
*/ 
int HI_Serial_Set(int fd,int speed,int flow_ctrl,int databits,int stopbits,int parity) ;
/*
*描述  : 串口初始化，实际还是串口参数设置
*参数  : fd: 文件描述符	 
*        speed: 波特率.115200,19200,9600...
*        flow_ctrl: 流控
*        databits: 数据位 取值为5,6,7,8
*        stopbits: 停止位 取值为1,2
*        parity: 奇偶校验位	 取值为N,W,O,S
*返回值: 成功返回0，失败返回-1
*注意  ：无
*/ 
int HI_Serial_Init(int fd, int speed,int flow_ctrl,int databits,int stopbits,int parity);
/*
*描述  : 串口发送
*参数  : fd:文件描述符	
*        send_buf:发送buf
*        data_len:数据长度
*返回值: 成功返回数据长度，失败返回-1
*注意  ：无
*/
int HI_Serial_Send(int fd,const char *send_buf,int data_len) ;
/*
*描述  : 串口接受
*参数  : fd:文件描述符	
*        send_buf:接收buf
*        data_len:数据长度
*返回值: 成功返回数据长度，失败返回-1
*注意  ：无
*/
int HI_Serial_Recv(int fd, char *rcv_buf,int data_len) ;

/*
*描述  : 串口接受函数线程
*参数  : 无
*返回值: 无
*注意  ：无
*/

// void *uart_recv_task(void *arg);
/*
*描述  : 串口发送函数线程
*参数  : 无
*返回值: 无
*注意  ：无
*/
// void *uart_send_task(void *arg);


#ifdef __cplusplus
};
#endif

#endif
